package model;

import java.util.ArrayList;
import java.sql.Date;
import java.util.List;

import persistence.OrdenDeCompraMapper;

public class OrdenDeCompra {
	private long ordenId;
	private Date fecha;
	private float monto;
	private Proveedor proveedor;
	private List<OrdenDeCompraDetalle> detalles;
	
	public OrdenDeCompra(Proveedor proveedor) {
		this.proveedor = proveedor;
		detalles = new ArrayList<OrdenDeCompraDetalle>();
	}
	
	public OrdenDeCompra(int ordenId, float monto, Date fecha, Proveedor proveedor) {
		this.ordenId = ordenId;
		this.monto = monto;
		this.fecha = fecha;
		this.proveedor = proveedor;
	}
	
	public void setDetalles(List<OrdenDeCompraDetalle> detalles) {
		this.detalles = detalles;
	}

	public void agregarMaterial(Material material, int cantidad) {
		if (proveedor.equalsProveedor(material.getProveedor())) {
			OrdenDeCompraDetalle detalle = new OrdenDeCompraDetalle(material, cantidad);
			detalles.add(detalle);
		}
	}
	
	public void removerMaterial(Material material) {
		for(OrdenDeCompraDetalle detalle: detalles) {
			if(material.getCodigo() == detalle.getMaterialCodigo())
				detalles.remove(detalle);
		}
	}
	
	public void setOrdenId(long ordenId) {
		this.ordenId = ordenId;
	}
	
	public long getOrdenId() {
		return ordenId;
	}
	
	public List<OrdenDeCompraDetalle> getItems() {
		return detalles;
	}
	
	public Date getFecha() {
		return fecha;
	}
	
	public float getMonto() {
		return monto;
	}
	
	public Proveedor getProveedor() {
		return proveedor;
	}

	public boolean guardar() {
		return OrdenDeCompraMapper.getInstance().insertar(this);
	}

	public void calcularMonto() {
		monto = 0;
		for (OrdenDeCompraDetalle detalle : detalles) {
			monto += detalle.obtenerPrecio();
		}
	}

}
